Testing of computers and networks is becoming increasingly important in today's environment. Users of these systems demand high reliability standards. Data integrity can also be compromised when system failures occur. The testing of a single computer, although complex in itself, is generally known to exist. Various types of power-on, or boot code, will test the computer when the system is first activated.
Diagnostic programs can also be run on a computer or network when a system malfunction has occurred, or is suspected. These diagnostic programs are very specific to the hardware being tested, and information for invoking and/or operating the test procedures are generally hardcoded within the diagnostic program itself. This inability to customize a given diagnostic program for other than its original intended use has greatly limited its usability in a multi-computer network, having multi-computer interconnected to either singularly, or in combination with one another, perform a given task.
It is also known in the art that script files can be written to control application programs. Scripts are quasi-programs within a Unix, or compatible, operating system that define a set of procedures to be performed. These procedures can invoke application programs, receive I/O from a computer user, and make logical decisions based upon parameters. However, these script programs suffer many of the same deficiencies of a regular application program, such as lack of flexibility. Adding an additional step or process requires modifications be made to the program itself, which can not only be complicated, but due to the state of programming, can cause unexpected results in other areas of the program.
To provide interprocess communication support in a multi-computer network, some techniques use the concept of creating process context based on process name. If this context is achieved through a process of inheritance based on process name, then the process context becomes rigid based on the order of process start. There is no concept of a global variable or of extending full process semantics into a distributed environment.
There is a need to provide a flexible, highly modularized, testing mechanism which can support a hierarchical, networked computer environment. There is also a need to provide the ability to simulate real-life operations in such an environment, to aid in detecting architectural, performance, or inter-operability problems.